A method I devised to try to keep myself on-track in projects! And also to encourage myself to write good documentation/notes so I can dive back in whenever-I-want-to.
Project Horticulture has three stages of development. Each stage has a set of objectives to hit before it's considered to have reached that stage.
The objectives should be written out somewhere, I don't care where, but they should be able to be checked and looked at with ease. I like to make a HORTICULTURE.md file in the repository.
germination
This is the pre-seedling stage. Seedling's goals've not yet been met, and that's what you're working towards.
Seedling
A seedling is an Initial Implementation--an I²--that has a set of objectives to reach before it's considered "useable".
Objectives here should be fine-grained; they should be specific and small. Something like "serve static files and prevent path traversal". At this stage, that would read as: "Just get static files serving at all, and don't let the user navigate to /etc/shadow"
Sprouted
The objectives here are tougher to reach and bring the Thing closer to a final vision. You can be a bit more coarse here. As an example, instead of an objective for each of "Create, Read, Update, Delete", you could write "Implement drafts".
Established
To hit established, you are past growth. Not "growth" in the like, business sense--I don't have a care in the world about customers for my little projects--but in the "It's done becoming" sense. It's became!
Objectives here are like fruit or flowers! They're more grand and coarse. Features that are not requirements, per se, but are Beautiful or Cool or Tasty. They're icing on the cake, I suppose; they help bring the user more joy or comfort. Polish, I guess, too.
Dormancy
A project can be placed into dormancy when you are done working on it for a bit. "For a bit" is subjective and depends on the caretaker of the project. If I know I'm going to be stepping away for a few weeks, I will place the project into dormancy. But if I am going to sleep for the night, or I expect I'll be back to it in a few days, I might not.
Dormancy must be deliberate. You place a project into dormancy by writing a dormancy file.
The dormancy file should contain what you last worked on/what you were working on when you had to step away. Especially write down any unfinished or half-implemented features.
You should include required knowledge in this file, or link to it at least, such that if someone new comes along they can pick it up rather quickly. (in a few months you should consider yourself someone new, perhaps; do you expect to retain all the knowledge you need?)
rot
When a project is not explicitly placed into dormancy, it will rot. The longer it's been rotting, the harder it will be to pick back up.
A rotted project can almost always be brought back; almost nothing is too-far gone, but sometimes starting fresh is the best option.